package cn.jr.dao.impl;

import cn.jr.dao.IOrderProjectDao;
import cn.jr.pojo.OrderProject;
import cn.jr.pojo.Wares;
import cn.jr.util.DBHelper;

import java.util.ArrayList;

//订单项表
@SuppressWarnings("all")
public class OrderProjectDaoImpl implements IOrderProjectDao {

    DBHelper db = new DBHelper();

    //购买/结账
    //添加 订单项表 里的 商品
    @Override
    public int insertOrderPro(int orderId, Wares wares,int addCount) {
        //接入：在订单表查询的 订单主键，数量直接‘1‘，总价直接'0.00'
        //     在商品表ware查询的 商品编号，名称，单价
        String sql = "insert into torderproject values(null,?,?,?,?,?,?,?)";
        Object[] objs = {orderId, wares.getWaresNumber(), wares.getWaresName(),addCount, wares.getWaresPrice(), wares.getWaresPrice() * 0, wares.getWaresPrice() * 0};
        return db.dtUpdate(sql, objs);
    }

    //查询 某一订单 里的 一个商品 by 订单主键 和 商品编号(orderId,waresNumber)
    //       如果返回的数据的waresNumber是空的，就是没有
    //       可以用来判断 存不存在 存在就执行  修改  操作，只给数量+1
    @Override
    public OrderProject queryOrderProByIdAndNum(int orderId, String waresNumber) {
        String sql = "select * from torderproject where orderId=? and waresNumber=?";
        Object[] objs = {orderId, waresNumber};
        ArrayList<OrderProject> list = db.dtQuery(sql, OrderProject.class, objs);
        return list.size() > 0 ? list.get(0) : new OrderProject(0,null,null,null,null,null,null);
    }

/*    //修改 如果已经有了，就只加数量
    @Override
    public int updateWaresCountByOIdAndNum(int orderId, String waresNumber,int waresCount) {
        String sql = "update torderproject set waresCount=? where orderId=? and waresNumber=?";
        Object[] objs = {waresCount+1, orderId, waresNumber};
        return db.dtUpdate(sql, objs);
    }*/


    //修改(添加) 如果已经有了，，更新总价 --->先拿到数据，后计算 并赋值 ( waresCount 在 service层 已处理)
    @Override
    public boolean updateAnOrderProByOIdAndNum(int orderId, String waresNumber,int waresCount
            , double waresPrice, double activeMoney) {
        String sql = "update torderproject set waresCount=?, waresAllPrice=? ,orderReallyPrice=? where orderId=? and waresNumber=?";
        Object[] objs = {waresCount, waresPrice*waresCount, waresPrice*waresCount*activeMoney, orderId, waresNumber};
        return db.dtUpdate(sql, objs)>0?true:false;
    }

    /*//修改(退货 -- 减数量) --- 用上面的 修改方法
    //  这里的 waresCount 是在 service层  修改(waresCount-returnCount)之后的,
    //  修改后的 实际总价=(orderReallyPrice/waresCount)*waresPrice
    @Override
    public boolean minusOrderProCountByIdAndWNumAndRCount(int orderId,String waresNumber,int waresCount
            ,double waresPrice,double orderReallyPrice) {
        String sql = "update torderproject set waresCount=?, waresAllPrice=? , orderReallyPrice=? where orderId=? and waresNumber=?";
        Object[] objs = {waresCount,waresPrice*waresCount,orderReallyPrice,orderId,waresNumber};
        return db.dtUpdate(sql, objs)>0?true:false;
    }*/

    //删除 订单项表 里的 商品 by 商品编号(删一整条)
    @Override
    public int deleteOrderPro(int orderId, String waresNumber) {
        String sql = "delete from torderproject where orderId=? and waresNumber=?";
        Object[] objs = {orderId, waresNumber};
        return db.dtUpdate(sql, objs);
    }


    //查询 同一订单 里的 所有商品 by 订单主键(orderId)
    @Override
    public ArrayList<OrderProject> queryAllOrderProByOId(int orderId) {
        String sql = "select * from torderproject where orderId=?";
        return db.dtQuery(sql, OrderProject.class,orderId);
    }

    //记账统计
    //查询 订单项表 里的 同一种商品 by 商品编号(waresNumber)
    @Override
    public ArrayList<OrderProject> queryOrderProByWaresNum(String waresNumber) {
        String sql = "select * from torderproject where  waresNumber=?";
        return db.dtQuery(sql, OrderProject.class, waresNumber);
    }
}
